package com.efuture.chapterfour

/* @Description:Kotlin语言计算属性与防范竞态条件
 * @Auther: zhaoshanshan
 * @Date: 2022/03/06/9:38 下午
 */
class Demo63{
    val num1 = 0//该背后隐藏java代码没有set方法 因为val关键字只是可读
    //背后隐藏代码
    //private int num = 0;
//    public int getNum(){
//        this.num = num;
//    }

    val num2:Int
    get() = (1..1000).shuffled().first()//生成1到1000的随机整数 因为get方法进行了重写 相当于get函数覆盖了field 因此field参数会会失效

    val info:String? = ""
    fun getShowInfo():String{
        //防范竞态条件
        return info?.let{
            if(it.isBlank()){
                "info的值为空串"
            }else{
                "$it"
            }
        }?:"info的值为null"

    }

}
fun main() {
    val demo63 = Demo63()
    println(demo63.num1)//调用的是getNum()方法
   // demo63.num = 2 改行代码会报错 因为demo63没有提供setNum方法 所以不能调用
    println(demo63.num2)//调用的是getNum()方法

    println(demo63.getShowInfo())

}